/* eslint-disable @typescript-eslint/no-unsafe-return */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
import CryptoJS from 'crypto-js';

const key = CryptoJS.enc.Utf8.parse('wwzxckafei123456');
const iv = CryptoJS.enc.Utf8.parse('wwzxckafei123456');

/**
 * 使用 AES 算法对数据进行加密
 * @param data 需要加密的数据
 * @returns 加密后的字符串
 */
export function aesEncrypt(data: string | undefined): string | undefined {
  if (!data) return data;
  const enc = CryptoJS.AES.encrypt(data, key, {
    iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  return enc.toString();
}

/**
 * 使用 AES 算法对数据进行解密
 * @param data 需要解密的数据
 * @returns 解密后的字符串
 */
export function aesDecrypt(data: string | undefined): string | undefined {
  if (!data) return data;
  const dec = CryptoJS.AES.decrypt(data, key, {
    iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  return dec.toString(CryptoJS.enc.Utf8);
}

/**
 * 对字符串进行 MD5 哈希计算
 * @param str 需要进行 MD5 计算的字符串
 * @returns MD5 哈希值的字符串
 */
export function md5(str: string): string {
  return CryptoJS.MD5(str).toString();
}
